package com.proyecto.personas.modelo.validacion.proyecto;

import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.servicio.interfaces.IServicioTransaccion;
import com.proyecto.core.modelo.validacion.IValidacionServicio;
import com.proyecto.personas.modelo.dto.IdiomaId;
import com.proyecto.personas.modelo.dto.PersOtrosIdioma;
import com.proyecto.personas.modelo.dto.PersOtrosIdiomaId;

public class ValidacionServicioPersIdiomas implements
IValidacionServicio{
	
	IServicioTransaccion servicioIdioma;
	
	public void consultar(Object o) throws GeneralException {

		PersOtrosIdiomaId objPersOtrosIdiomaId = (PersOtrosIdiomaId)o;
		if (o == null || objPersOtrosIdiomaId.getPersonas() == null 
				|| objPersOtrosIdiomaId.getPersonas().getId().getCiaopr() == null
				|| "".equals(objPersOtrosIdiomaId.getPersonas().getId().getCiaopr().trim())
				|| objPersOtrosIdiomaId.getPersonas().getId().getNropersona() == null){
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.consulta.pkNull");
		}
	}

	public void consultarTodos(Object o) throws GeneralException {
		if (o == null) {
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.consulta.pkNull");
		}
	}

	public void eliminar(Object o) throws GeneralException {
		PersOtrosIdioma objPersOtrosIdioma = (PersOtrosIdioma) o;
		if (objPersOtrosIdioma == null || objPersOtrosIdioma.getId() == null
				|| objPersOtrosIdioma.getId().getPersonas() == null 
				|| objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr() == null
				|| objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr().trim().equals("")
				|| objPersOtrosIdioma.getId().getIdiomacod() == null 
				|| objPersOtrosIdioma.getId().getIdiomacod().trim().equals(""))
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.eliminar.pkNull");
	}

	
	
	public void incluir(Object o) throws GeneralException {
		PersOtrosIdioma objPersOtrosIdioma = (PersOtrosIdioma) o;
		if (objPersOtrosIdioma == null || objPersOtrosIdioma.getId() == null
				|| objPersOtrosIdioma.getId().getPersonas() == null 
				|| objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr() == null
				|| objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr().trim().equals("")
				|| objPersOtrosIdioma.getId().getIdiomacod() == null 
				|| objPersOtrosIdioma.getId().getIdiomacod().trim().equals(""))
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.incluir.pkNull");
		
		this.validaCampos(objPersOtrosIdioma);
		
	}

	public void modificar(Object o) throws GeneralException {
		PersOtrosIdioma objPersOtrosIdioma = (PersOtrosIdioma) o;
		if (objPersOtrosIdioma == null || objPersOtrosIdioma.getId() == null
				|| objPersOtrosIdioma.getId().getPersonas() == null 
				|| objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr() == null
				|| objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr().trim().equals("")
				|| objPersOtrosIdioma.getId().getIdiomacod() == null 
				|| objPersOtrosIdioma.getId().getIdiomacod().trim().equals(""))
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.modificar.pkNull");
		
		this.validaCampos(objPersOtrosIdioma);
		
	}
	
	private void validaCampos(PersOtrosIdioma objPersOtrosIdioma ) throws GeneralException {
		
		if (objPersOtrosIdioma.getId().getIdiomacod() != null && 
				!objPersOtrosIdioma.getId().getIdiomacod().trim().equals("")){
			servicioIdioma.consultar(new IdiomaId(objPersOtrosIdioma.getId().getPersonas().getId().getCiaopr(),
					objPersOtrosIdioma.getId().getIdiomacod()));
		}
		
		
		String campos = "";		
		if ("N".equals(objPersOtrosIdioma.getPersidiomaescribe()) && 
				"N".equals(objPersOtrosIdioma.getPersidiomahabla()) &&
				"N".equals(objPersOtrosIdioma.getPersidiomalee()) ){	
			 campos = "Idioma.Opcion";				
		}	
		if (!"".equals(campos)) {
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.incluir.campos_obligatorios",
					campos);
		}			
		
	}
	
	
	public void buscarCatalogoPorPropiedad(String atributo, String valor)
			throws GeneralException {
		if (atributo == null || valor == null || atributo.equals("")
				|| valor.equals("")) {
			throw new GeneralException(
					"error.persona.datosBasicos.persOtrosIdiomas.buscarCatalogoXPropiedad.parametrosInvalidos");
		}
	}

	public IServicioTransaccion getServicioIdioma() {
		return servicioIdioma;
	}

	public void setServicioIdioma(IServicioTransaccion servicioIdioma) {
		this.servicioIdioma = servicioIdioma;
	}
}
